In [10]:
import numpy as np
from qutip import *
These are the polarization states:
In [11]:
H = Qobj([[1],[0]])
V = Qobj([[0],[1]])
P45 = Qobj([[1/np.sqrt(2)],[1/np.sqrt(2)]])
M45 = Qobj([[1/np.sqrt(2)],[-1/np.sqrt(2)]])
R = Qobj([[1/np.sqrt(2)],[-1j/np.sqrt(2)]])
L = Qobj([[1/np.sqrt(2)],[1j/np.sqrt(2)]])
In [12]:
V
Out[12]:
In [17]:
Hbra*V
Out[17]:
In [16]:
Hbra = H.dag()
Devices:
HWP - Half-wave plate axis at $\theta$ to the horizontal
LP - Linear polarizer, axis at $\theta$
QWP - Quarter-wave plate, axis at $\theta$
Note, these are functions so you need to call them with a specific value of theta.
In [18]:
def HWP(theta):
return Qobj([[np.cos(2*theta),np.sin(2*theta)],[np.sin(2*theta),-np.cos(2*theta)]]).tidyup()
In [19]:
def LP(theta):
return Qobj([[np.cos(theta)**2,np.cos(theta)*np.sin(theta)],[np.sin(theta)*np.cos(theta),np.sin(theta)**2]]).tidyup()
In [20]:
def QWP(theta):
return Qobj([[np.cos(theta)**2 + 1j*np.sin(theta)**2,
(1-1j)*np.sin(theta)*np.cos(theta)],
[(1-1j)*np.sin(theta)*np.cos(theta),
np.sin(theta)**2 + 1j*np.cos(theta)**2]]).tidyup()
In [22]:
QWP(np.pi/4)
Out[22]:
In [23]:
H.dag()*H
Out[23]:
To show more information on an object, use the question mark after the function or object:
In [25]:
np.sin?
In [26]:
psi = Qobj([[1+1j],[2-1j]])
psi
Out[26]:
In [27]:
psi.dag()
Out[27]:
In [17]:
psi.dag().dag()
Out[17]:
the .dag()
python method computes the "daggar" or the complex transpose.
In [28]:
psi.dag()*psi
Out[28]:
In [29]:
psi_norm = psi*np.sqrt(1/7)
In [30]:
psi_norm.dag() * psi_norm
Out[30]:
In [31]:
V.dag()*V
Out[31]:
In [32]:
H.dag()*V
Out[32]:
In [33]:
L.dag()*R
Out[33]:
In [34]:
P45.dag()*M45
Out[34]:
In [35]:
psi = 1/np.sqrt(5)*H + 2/np.sqrt(5)*V
psi
Out[35]:
In [55]:
psi2 = Qobj([[1/np.sqrt(5)],[2/np.sqrt(5)]])
psi2
Out[55]:
In [57]:
H.dag()*psi
Out[57]:
In [38]:
(H.dag()*P45).norm()**2
Out[38]:
In [49]:
np.conjugate(H.dag()*P45) * (H.dag()*P45)
Out[49]:
In [58]:
HWP(np.radians(45)) * H
Out[58]:
In [60]:
HWP(np.pi/4) * H == V
Out[60]:
In [61]:
import matplotlib.pyplot as plt
In [62]:
plt.plot([1,2,3,2,3,4])
Out[62]:
In [89]:
phi_list = np.linspace(0,8*np.pi,num=100)
In [85]:
plt.plot(phi,np.sin(phi))
Out[85]:
In [87]:
sin_list = [np.sin(p) for p in phi] # notes
add text
In [88]:
plt.plot(phi,sin_list)
Out[88]:
In [ ]:
In [ ]:
In [ ]:
In [101]:
def psi(phi):
return 1/np.sqrt(2)*(H + np.exp(1j*phi)*V)
In [102]:
answer = [(M45.dag()*psi(phi)).norm()**2 for phi in phi_list]
In [107]:
plt.plot(phi_list/np.pi,answer,"-o")
plt.xlabel("$\phi$")
plt.ylabel("P(-45)")
Out[107]:
In [ ]: